package cn.lingyangwl.agile.infra.module.group.model.entity;

import cn.lingyangwl.agile.model.*;
import cn.lingyangwl.agile.model.constants.*;
import cn.lingyangwl.agile.model.enums.*;
import cn.lingyangwl.agile.tenant.core.*;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * 通用数据组
 *
 * @author shenguangyang
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("infra_data_group")
@DataIsolation(filterTenant = true, filterMainTenant = true, tableName = "infra_data_group")
public class DataGroup extends BasePlusPO {
    @TableId
	private Long id;
	
	private String name;

	/**
	 * 每个数据分组类型下的组编码, 业务方自定义, 且必须唯一, 没有会自动生成一个
	 */
	private String code;
	
	/**
	 * 业务类型, 区分不同数据组
	 * @see DataGroupBizTypeEnum
	 */
	private Integer bizType;

	/**
	 * 一个业务下的组类型, 可选
	 */
	private String groupType;

	/**
	 * 组下的数据数量
	 */
	private Long dataCount = 0L;
	
	/**
	 * 组图标
	 */
	private String icon;
	
	/**
	 * 排序
	 */
	private Integer sortNo;
	
	/**
	 * 父id, 如果为顶级就是0
	 */
	private Long parentId = TreeCons.ROOT_PARENT_ID;


	/**
	 * 是否被删除
	 */
	private Boolean deleted;

    public static LambdaQueryWrapper<DataGroup> lqw() {
		return Wrappers.lambdaQuery();
	}

	public static UpdateWrapper<DataGroup> uw() {
		return Wrappers.update();
	}

	public static LambdaUpdateWrapper<DataGroup> luw() {
		return Wrappers.lambdaUpdate();
	}
}
